package com.cy.pj.module.web;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;

//@ResponseBody
//@ControllerAdvice//此注解描述的类为spring web模块的全局异常处理类
@RestControllerAdvice  //二者为一体
public class GlobalExceptionHandler {

    @ExceptionHandler(ArithmeticException.class)//这个注解描述的方法为处理算数异常的类型
    //@ResponseBody
    public String doHandleArithmeticException(ArithmeticException e) {//在这个方法内部要拿到异常对象，在方法里定义这个异常对象
        e.printStackTrace();
        System.out.println("GlobalExceptionHandler.doHandleArithmeticException");
        return "计算过程中出现了异常，异常信息为" + e.getMessage();
    }

    @ExceptionHandler(RuntimeException.class)//这个注解描述的方法为处理算数异常的类型
    //@ResponseBody
    public String doHandleRuntimeException(RuntimeException e) {//在这个方法内部要拿到异常对象，在方法里定义这个异常对象
        e.printStackTrace();
        System.out.println("GlobalExceptionHandler.doHandleRuntimeException");
        return "运行过程中出现了异常，异常信息为" + e.getMessage();
    }

    @ExceptionHandler(Throwable.class)//这个注解描述的方法为处理算数异常的类型
    //@ResponseBody
    public String doHandleThrowable(Throwable e) {//在这个方法内部要拿到异常对象，在方法里定义这个异常对象
        e.printStackTrace();
        System.out.println("GlobalExceptionHandler.doHandleThrowable");
        //发邮箱，发短信，服务端后台报警（播放一段音乐）
        return "系统维护中";
    }

}
